/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.mindbox.mueblesalpes.presentacion.cliente;

import com.mindbox.mueblesalpes.negocio.cliente.ClienteServiceLocal;
import com.mindbox.mueblesalpes.negocio.persistence.ClientePersistenceMock;
import com.mindbox.mueblesalpes.negocio.persistence.IClientePersistence;
import com.mindbox.mueblesalpes.negocio.entity.Cliente;
import com.mindbox.mueblesalpes.negocio.entity.TipoDocumento;
import com.mindbox.mueblesalpes.negocio.geo.Ciudad;
import com.mindbox.mueblesalpes.negocio.geo.Departamento;
import com.mindbox.mueblesalpes.negocio.geo.Pais;
import com.mindbox.mueblesalpes.negocio.utilidades.IUtilidades;
import com.mindbox.mueblesalpes.negocio.utilidades.UtilidadesMock;
import com.mindbox.mueblesalpes.presentacion.utils.Mensajes;
import com.mindbox.mueblesalpes.presentacion.utils.ReglasNavegacion;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import org.richfaces.component.html.HtmlDataTable;

/**
 *
 * @author Diana Carolina
 */
public class ClienteListBean {
    
    Mensajes mensaje;
    IUtilidades utilidades;
    String tipoDocumento;
    String numeroDocumento;
    String nombreCompleto;
    String telefonoResidencia;
    String direccion;
    String ciudadResidencia;
    String profesion;
    String email;
    String departamento;
    String pais;
    private List<Cliente> listadoClientes;
    private HtmlDataTable tabla;
    boolean mostrarTabla;
    int seleccion;
     @EJB
    private ClienteServiceLocal clienteEjb;

    public ClienteListBean(){
    }
    @PostConstruct
    public void init(){
        listadoClientes = new ArrayList<Cliente>();
        utilidades = new UtilidadesMock();
        tabla = new HtmlDataTable();
        listadoClientes = clienteEjb.mostrarClientes();
        mensaje = new Mensajes();
        mostrarTabla = false;
        seleccion = 0;
    }
    public Map getListaTiposDocumento(){
        Map tipoDoc = new TreeMap();
        tipoDoc.put("", "Seleccionar");
        //tipoDoc.put("cedula", "CEDULA");
        for(Object o: utilidades.consultarTipoDocumento()){
            tipoDoc.put(o.toString(), o.toString());
        }
        return tipoDoc;
    }
     public Map getListaPaises(){
        Map paises = new TreeMap();
        paises.put("", "Seleccionar");
        for(Object o: utilidades.consultarPaises()){
            paises.put(o.toString(), o.toString());
        }
        return paises;

    }
    public Map getListaCiudades(){
        Map ciudades = new TreeMap();
        ciudades.put("", "Seleccionar");
        for(Object o: utilidades.consultarCiudades()){
            ciudades.put(o.toString(), o.toString());
        }
        return ciudades;
    }
    public Map getListaDepartamento(){
        Map departamentos = new TreeMap();
        departamentos.put("", "Seleccionar");
        for(Object o: utilidades.consultarDepartamentos()){
            departamentos.put(o.toString(), o.toString());
        }
        return departamentos;
    }
    public Map getTiposUsuario(){
        Map tiposUsuario = new TreeMap();
        tiposUsuario.put("", "Seleccionar");
        for(Object o: utilidades.consultarTipoUsuarios()){
            tiposUsuario.put(o.toString(), o.toString());
        }
        return tiposUsuario;
    }

    public String getCiudadResidencia() {
        return ciudadResidencia;
    }

    public void setCiudadResidencia(String ciudadResidencia) {
        this.ciudadResidencia = ciudadResidencia;
    }

    public String getDepartamento() {
        return departamento;
    }

    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Mensajes getMensaje() {
        return mensaje;
    }

    public void setMensaje(Mensajes mensaje) {
        this.mensaje = mensaje;
    }

    public String getNombreCompleto() {
        return nombreCompleto;
    }

    public void setNombreCompleto(String nombreCompleto) {
        this.nombreCompleto = nombreCompleto;
    }

    public String getNumeroDocumento() {
        return numeroDocumento;
    }

    public void setNumeroDocumento(String numeroDocumento) {
        this.numeroDocumento = numeroDocumento;
    }

    public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }

    public String getProfesion() {
        return profesion;
    }

    public void setProfesion(String profesion) {
        this.profesion = profesion;
    }

    public String getTelefonoResidencia() {
        return telefonoResidencia;
    }

    public void setTelefonoResidencia(String telefonoResidencia) {
        this.telefonoResidencia = telefonoResidencia;
    }

    public String getTipoDocumento() {
        return tipoDocumento;
    }

    public void setTipoDocumento(String tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    public List<Cliente> getListadoClientes() {
        return listadoClientes;
    }

    public void setListadoClientes(List<Cliente> listadoClientes) {
        this.listadoClientes = listadoClientes;
    }

    public HtmlDataTable getTabla() {
        return tabla;
    }

    public void setTabla(HtmlDataTable tabla) {
        this.tabla = tabla;
    }


    public String buscarCliente(){
        try{
            System.out.println("PASE POR ACA!!!!");
            Ciudad ciudad = new Ciudad();
            Cliente cliente = new Cliente();
            Departamento depto = new Departamento();
            Pais paisO = new Pais();
            System.out.println("numeroDoc " + numeroDocumento );
            System.out.println("nombre " + nombreCompleto);
            System.out.println("tel " + telefonoResidencia);
            System.out.println("ciudad " + ciudadResidencia);
            System.out.println("depto " + departamento);
            System.out.println("pais " + pais);
            if(tipoDocumento.equals(TipoDocumento.CEDULA.toString())){
                cliente.setTipoDocumento(TipoDocumento.CEDULA);
            }
            if(tipoDocumento.equals(TipoDocumento.NIT.toString())){
                cliente.setTipoDocumento(TipoDocumento.NIT);
            }
            if(numeroDocumento != null && !numeroDocumento.equals("")){
                cliente.setNumeroDocumento(numeroDocumento);
            }
            if(nombreCompleto != null && !nombreCompleto.equals("")){
                cliente.setNumeroDocumento(numeroDocumento);
            }
            if(telefonoResidencia != null && !telefonoResidencia.equals("")){
                cliente.setTelefonoResidencia(telefonoResidencia);
            }
            if(direccion != null && !direccion.equals("")){
                cliente.setDireccion(direccion);
            }
            if(!ciudadResidencia.equals("Seleccionar")){
                ciudad.setNombre(ciudadResidencia);
            }
            if(!departamento.equals("Seleccionar")){
                depto.setNombre(departamento);
                //cliente.getCiudadResidencia().setDepartamento(depto);
                ciudad.setDepartamento(depto);
                cliente.setCiudadResidencia(ciudad);
            }
            if(!pais.equals("Seleccionar")){
                paisO.setPais(pais);
                depto.setPais(paisO);
                ciudad.setDepartamento(depto);
                cliente.setCiudadResidencia(ciudad);
                cliente.getCiudadResidencia().getDepartamento().setPais(paisO);
            }
            if(email != null && !email.equals("")){
                cliente.setEmail(email);
            }
            
            listadoClientes = clienteEjb.buscarCliente(cliente);
            this.setMostrarTabla(true);

        }catch(Exception e){
            Mensajes.asignarMensajeError("search.error");
        }
        return null;
    }
    public String editarCliente(){
        int seleccion = (Integer) tabla.getRowKey();

        if (seleccion > listadoClientes.size()) {
            return null;
        }
        Cliente clienteSeleccionado = (Cliente)listadoClientes.get(seleccion);


        FacesContext facesContext = FacesContext.getCurrentInstance();
        facesContext.getExternalContext().getSessionMap().put("ClienteEdit", clienteSeleccionado);
        return ReglasNavegacion.editar_datos_usuario.toString();
    }
    public String borrarCliente()
    {
        System.out.println("A BORRAR!!!");
        //int seleccion = (Integer) tabla.getRowKey();

        if (seleccion > listadoClientes.size()) {
            return null;
        }
        Cliente clienteSeleccionado = (Cliente)listadoClientes.get(seleccion);
        System.out.println("Nombre " + clienteSeleccionado.getNombreCompleto());
        listadoClientes.remove(clienteSeleccionado);

        return "list_clientes";
    }
    public String obtenerClienteEliminar(){
        try{
            seleccion = (Integer) tabla.getRowKey();

        }catch(Exception e){
            Mensajes.asignarMensajeError("search.delete.error");
        }
        return null;
    }
    public String crearCliente(){
        return ReglasNavegacion.insert_clientes.toString();
    }

    public boolean isMostrarTabla() {
        return mostrarTabla;
    }

    public void setMostrarTabla(boolean mostrarTabla) {
        this.mostrarTabla = mostrarTabla;
    }
    

    
}
